/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package funda.appius.Constructora;

import funda.appius.arquitectura.AbstractFunda;
import java.sql.Date;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author payo
 */
public class Constructora extends AbstractFunda{

    private int IdConstructora, Telefono;
    private String Nombre,Direccion,RFC,Email,Descripcion;
    private Date FechaIngreso;
    private ArrayList<Usuario> lstUsuario;
    private ArrayList<Proyecto> lstProyecto;

    public String getDescripcion() {
        return Descripcion;
    }

    public void setDescripcion(String Descripcion) {
        this.Descripcion = Descripcion;
    }

    public String getDireccion() {
        return Direccion;
    }

    public void setDireccion(String Direccion) {
        this.Direccion = Direccion;
    }

    public String getEmail() {
        return Email;
    }

    public void setEmail(String Email) {
        this.Email = Email;
    }

    public Date getFechaIngreso() {
        return FechaIngreso;
    }

    public void setFechaIngreso(Date FechaIngreso) {
        this.FechaIngreso = FechaIngreso;
    }

    public int getIdConstructora() {
        return IdConstructora;
    }

    public void setIdConstructora(int IdConstructora) {
        this.IdConstructora = IdConstructora;
    }

    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }

    public String getRFC() {
        return RFC;
    }

    public void setRFC(String RFC) {
        this.RFC = RFC;
    }

    public int getTelefono() {
        return Telefono;
    }

    public void setTelefono(int Telefono) {
        this.Telefono = Telefono;
    }

    public ArrayList<Proyecto> getLstProyecto() {
        return lstProyecto;
    }

    public void setLstProyecto(ArrayList<Proyecto> lstProyecto) {
        this.lstProyecto = lstProyecto;
    }

    public ArrayList<Usuario> getLstUsuario() {
        return lstUsuario;
    }

    public void setLstUsuario(ArrayList<Usuario> lstUsuario) {
        this.lstUsuario = lstUsuario;
    }
    
    
    
    public Constructora()
    {
        super();
    }

    public Constructora(String Nombre, String Direccion, String RFC, int Telefono, String Email, String Descripcion, Date FechaIngreso, ArrayList<Usuario> lstUsuario) {
        super();
        this.Nombre = Nombre;
        this.Direccion = Direccion;
        this.RFC = RFC;
        this.Telefono = Telefono;
        this.Email = Email;
        this.Descripcion = Descripcion;
        this.FechaIngreso = FechaIngreso;
        this.lstUsuario = lstUsuario;
        this.lstProyecto = new ArrayList<Proyecto>();
        this.IdConstructora = Integer.parseInt(insertarId().toString());
    }
    
    @Override
    protected void fillFunda(ResultSet row) {
        try{
            int x =0;
            this.lstProyecto = new ArrayList<Proyecto>();
            this.lstUsuario = new ArrayList<Usuario>();
            this.IdConstructora = row.getInt(++x);
            this.Nombre = row.getString(++x);
            this.Direccion = row.getString(++x);
            this.RFC = row.getString(++x);
            this.Telefono = row.getInt(++x);
            this.Email = row.getString(++x);
            this.Descripcion = row.getString(++x);
            this.FechaIngreso = Date.valueOf(row.getString(++x));
            List<AbstractFunda> abs = AbstractFunda.getAllFrom("usuario", "IdUsuario", " IdConstructora", IdConstructora,Usuario.class);
            for(AbstractFunda val : abs)
                this.lstUsuario.add((Usuario)val);
            List<AbstractFunda> abs2 = AbstractFunda.getAllFrom("proyecto", "IdProyecto", " IdConstructora", IdConstructora,Proyecto.class);
            for(AbstractFunda val : abs2)
                this.lstProyecto.add((Proyecto)val);
        }
        catch(Exception e){}
    }

    @Override
    protected void Comandos() {
        this.id = "IdConstructora";
        this.tabla = "constructora";
        this.strDelete = "Deleteconstructora";
        this.strInsertar = "Insertarconstructora";
        this.strInsertarId = "InsertarIdconstructora";
        this.strUpdate = "Updateconstructora";
    }

    @Override
    public ArrayList<Object> getAtributos() {
        ArrayList<Object> lst = new ArrayList<Object>();
        lst.add(Nombre);
        lst.add(Direccion);
        lst.add(RFC);
        lst.add(Telefono);
        lst.add(Email);
        lst.add(Descripcion);
        lst.add(FechaIngreso);
        lst.add(IdConstructora);
        return lst;
    }

    @Override
    public Constructora get(Object id) {
        AbstractFunda abs = AbstractFunda.getAbstractFunda(new Constructora(),id,tabla,this.id);
        Constructora c = (Constructora)abs;
        return c;
    }
    
    public ArrayList<Constructora> getAll() {
        List<AbstractFunda> abs = AbstractFunda.getAll(tabla,id,this.getClass());
        ArrayList<Constructora> lst = new ArrayList<Constructora>();
        for(AbstractFunda af : abs)
            lst.add((Constructora)af);
        return lst;
    }
    
}
